package com.evildog.workspace.invest.application.convert;

import com.evildog.workspace.common.result.PagedResult;
import java.util.List;
import com.evildog.workspace.invest.application.vo.BillTypeCategoryPageVO;
import com.evildog.workspace.invest.application.vo.BillTypeCategoryListVO;
import com.evildog.workspace.invest.application.vo.BillTypeCategoryVO;
import com.evildog.workspace.invest.application.dto.BillTypeCategoryPageDTO;
import com.evildog.workspace.invest.application.dto.BillTypeCategoryListDTO;
import com.evildog.workspace.invest.application.dto.BillTypeCategoryDTO;
import com.evildog.workspace.invest.application.model.BillTypeCategoryParam;
import com.evildog.workspace.invest.application.model.BillTypeCategoryPageParam;
import com.evildog.workspace.invest.application.model.BillTypeCategoryListParam;
import com.evildog.workspace.invest.application.bo.BillTypeCategoryBO;
import com.evildog.workspace.invest.application.bo.BillTypeCategoryPageBO;
import com.evildog.workspace.invest.application.bo.BillTypeCategoryListBO;
import com.evildog.workspace.invest.application.entity.BillTypeCategory;
import com.evildog.workspace.invest.application.entity.BillTypeCategoryPageDO;
import com.evildog.workspace.invest.application.entity.BillTypeCategoryListDO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;

@Mapper
public interface BillTypeCategoryConvert {

    BillTypeCategoryConvert INSTANCE = Mappers.getMapper(BillTypeCategoryConvert.class);

    BillTypeCategoryPageDTO convert(BillTypeCategoryPageParam billTypeCategoryPageParam);

    BillTypeCategoryListDTO convert(BillTypeCategoryListParam billTypeCategoryListParam);

    BillTypeCategoryDTO convert(BillTypeCategoryParam billTypeCategoryParam);

    @Mapping(target = "isDeleted", ignore = true)
    BillTypeCategory convert(BillTypeCategoryDTO billTypeCategoryDTO);

    BillTypeCategoryPageDO convert(BillTypeCategoryPageDTO billTypeCategoryPageDTO);

    BillTypeCategoryVO convert(BillTypeCategoryBO billTypeCategoryBO);

    BillTypeCategoryBO convert(BillTypeCategory billTypeCategory);

    List<BillTypeCategoryListBO> convert(List<BillTypeCategoryListDO> billTypeCategoryList);

    List<BillTypeCategoryListVO> convertVoList(List<BillTypeCategoryListBO> billTypeCategoryListBO);

    @Mappings({})
    PagedResult<BillTypeCategoryPageBO> convert(IPage<BillTypeCategoryPageDO> page);

    PagedResult<BillTypeCategoryPageVO> convert(PagedResult<BillTypeCategoryPageBO> page);
}